Various mechanisms are known for collecting and reporting information related to software quality and performance. For example, the Service Quality Metrics (SQM) tool produced by Microsoft Corporation of Redmond, Wash. provides a mechanism for collecting information on the execution of software programs and uploading that information to a central collection facility. The collection facility receives information from a plurality of computers, and aggregates the information for analysis and reporting. As a result of mechanisms such as SQM, software providers may analyze the performance of their products at an aggregate level, and improve their products over time.
SQM provides a mechanism whereby a user, such as a system programmer, may implement instrumentation that monitors the execution of a program. Typically, “instrumenting” a program involves implementing software routines which are called at program run time, and which record information related to the program's execution. Implementing these software routines usually requires that a programmer extend or modify the program source code, which is converted into binary form when the program is compiled. Instrumenting a program may provide any information related to the program's execution, ranging from a comprehensive view of its execution paths to critical data items employed in its processing. This information is usually written to one or more data structures. In the case of SQM, this information is periodically uploaded by a transport mechanism to the collection facility. Because information is aggregated at the collection facility, the data structure uploaded from each computer complies with a fixed format to facilitate efficient processing at the collection facility.
Instrumenting a program can be time-consuming and difficult. For example, as noted above, code must added to the program in its original source representation, which typically requires specialized programming knowledge. In addition, detailed analysis of the questions to be answered via the instrumentation must often be performed. In the case of SQM, this analysis may include determining how aggregated information at the collection facility may be used to answer these questions. This process can be time-consuming, regardless of a programmer's expertise. In addition, the process of modifying or extending source code to instrument a program, which may use complex techniques for storing and forwarding data, offers ample opportunity for errors to be introduced.